package com.shycloud.mido.homework.service;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.shycloud.mido.common.core.util.R;
import com.shycloud.mido.homework.api.dto.AssignDto;
import com.shycloud.mido.homework.api.entity.MidoHomeworkMain;
import com.shycloud.mido.homework.api.vo.AtvActiveDetailItemVO;
import com.shycloud.mido.homework.api.vo.AtvActiveDetailReqVO;
import com.shycloud.mido.homework.api.vo.AtvScheduleReqVO;
import com.shycloud.mido.homework.api.vo.AtvScheduleVO;
import com.shycloud.mido.homework.api.vo.HomeworkDashboardReqVO;
import com.shycloud.mido.homework.api.vo.MusicNameVO;
import com.shycloud.mido.homework.api.vo.PlayDataVO;
import com.shycloud.mido.homework.api.vo.StudentPlayDataVO;

public interface MidoHomeworkMainService extends IService<MidoHomeworkMain> {

	/**
	 * 下发作业
	 *
	 * @param assignDto
	 * @return java.lang.Boolean
	 * @author nianhua.jiang
	 * @date 2020/6/24 10:56
	 */
	R assign(AssignDto assignDto);

	/**
	 * 获取教师姓名
	 *
	 * @param teacherId
	 * @return java.lang.String
	 * @author nianhua.jiang
	 * @date 2020/7/3 10:59
	 */
	String getTeacherName(String teacherId);

	/**
	 * 删除作业
	 *
	 * @param id
	 * @return java.lang.Boolean
	 * @author nianhua.jiang
	 * @date 2020/7/3 16:36
	 */
	Boolean deleteHomework(String id);

	/**
	 * 获取当天的作业完成情况
	 *
	 * @param plusDays
	 * @param studentId
	 * @return java.util.List<com.shycloud.mido.homework.api.entity.MidoHomeworkMain>
	 * @author nianhua.jiang
	 * @date 2020/7/3 18:32
	 */
	List<String> getHomeWorkStatus(LocalDate plusDays, String studentId, String teacherId);

	/**
	 * 获取当天是否被老师提醒
	 *
	 * @param plusDays
	 * @param studentId
	 * @return java.util.List<java.lang.String>
	 * @author nianhua.jiang
	 * @date 2020/7/5 14:12
	 */
	List<String> getHomeWorkDing(LocalDate plusDays, String studentId, String teacherId);

	/**
	 * 获取筛选曲目列表
	 *
	 * @param studentId
	 * @param startDate
	 * @return java.util.List<java.util.Map < java.lang.String, java.lang.Object>>
	 * @author nianhua.jiang
	 * @date 2020/7/8 9:41
	 */
	List<MusicNameVO> getHomeworkMusicList(String studentId, String startDate, String teacherId);

	/**
	 * 家长模式下发作业
	 *
	 * @param assignDto
	 * @return java.lang.Boolean
	 * @author nianhua.jiang
	 * @date 2020/8/24 10:34
	 **/
	R assignForParent(AssignDto assignDto);

	/**
	 * 上传学生弹奏操作数据
	 *
	 * @param playDataVO
	 * @return
	 */
	Boolean uploadPlayData(PlayDataVO playDataVO, String memberId);

	/**
	 * 获得学生弹奏操作数据
	 *
	 * @param musicId
	 * @param
	 * @return
	 */
	StudentPlayDataVO getPlayData(String musicId);


	R getHomework7Days(String startDate, String studentId, boolean isStudent);

	R getHomeworkMonth(String startDate, String studentId, boolean isStudent, String isParentMode);

	R getHomeworkHelpMonth(String startDate, String studentId, boolean isStudent);

	R<Integer> updateDing(String startDate);

	Boolean deleteHomeworkBatch(List<String> idList);

	Boolean deleteHomeworkBatchV2(Map<String, Object> reqList);

	String getRegIdByStudentId(String studentId);

	Map<String, String> getRemindStudentPushMessage();

	List<AtvActiveDetailItemVO> studentActiveDatailByComplate(AtvActiveDetailReqVO vo);

	List<AtvActiveDetailItemVO> studentActiveDatailByHomework(AtvActiveDetailReqVO vo);

	List<AtvScheduleVO> atvSchedule(AtvScheduleReqVO vo);

	List<AtvScheduleVO> atvScheduleDetail(AtvScheduleReqVO vo);

	List<String> getHomeWorkStatusByStu(LocalDate startDate, String studentId);

	List<String> getHomeWorkDingByStu(LocalDate startDate, String studentId);

	R getHomeworkMonthByThread(String startDate, String studentId, boolean isStudent,
			String isParentMode)
			throws Exception;
	
	R getHomeworkMonthByThreadV2(HomeworkDashboardReqVO vo)throws Exception;

}
